import {userList,usercount} from '../../../request/api'

const state = {
    // 管理员列表
    userlist:[],
    // pageSize 页面显示条数
    pageSize:3,
    // 页码
    pageNum:1,
    // 总条数
    count:0
}

const getters = {
    // 获取管理员列表
    getUserList(state){
        return state.userlist
    },
    getSize(state){
        return state.pageSize
    },
    getNum(state){
        return state.pageNum
    },
    getCount(state){
        return state.count
    }
}

const mutations = {
    USERLIST(state,payload){
        state.userlist = payload
    },
    REQ_COUNT(state,payload){
        state.count = payload
    },
    // 同步修改页码事件
    REQ_PAGE(state,payload){
        state.pageNum = payload
    }
}

const actions = {
    getUserListAction(context){
        // console.log(context,'context');
        userList({
            size:context.state.pageSize, //查询条数
            page:context.state.pageNum, //页码
        }).then(res => {
            // console.log(res);
            /*
                当我们在删除非第一页且是当前最后一条数据的时候，出现了bug.它依然去获取当前页码，导致当前页码空数据，无法查找到，视图数据列表没有更新
        如果解决： 只需要把 pageNum -1 就可以了 
        注意： 哪一个临界条件 -1才是合适的，注意条件的判断

        目的是： 后端返回的数据格式并不友好，正常无数据的时候，应该返给前端[]但是它返回了null null没办法判断所以进行转化
            */

        let list = res.list ? res.list : []

        if(context.state.pageNum != 1 && list.length == 0){
            // 让pageNum -- 
            context.dispatch('changePageAction',context.state.pageNum -1)
        }
            context.commit('USERLIST',res.list)
        })
    },
    async getUserCount({commit}){
        let res = await usercount()
        console.log(res,'总条数');
        commit('REQ_COUNT',res.list[0].total)
    },
    // 获取当前行动并重新调用行动列表
    changePageAction(context,payload){
        // 修改页码
        context.commit('REQ_PAGE',payload)
        // 重新调用接口
        context.dispatch('getUserListAction')
    }
}

export default {
    state,
    getters,
    mutations,
    actions,
    namespaced:true
}